/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package heartinjava;

import java.util.ArrayList;
import javax.swing.JOptionPane;

/**
 *
 * @author TIENDAT
 */

public class PlayClient extends Play {
    
    public PlayClient(HeartInJava m_main, KhungBanCo g) 
    {
        player    = new Player[4];
        player[0] = new Player("Player1");
        player[1] = new Player("Player2");
        player[2] = new Player("Player3");
        player[3] = new Player("Player4");

        arrayId4Card = new ArrayList<Integer>();
        this.m_Main = m_main;
        this.gui = g;
    }

    @Override
    public void Update()
    {
        if(playState == KhaiBao.PLAYSTART)
        {            
            
        }
        else if(playState == KhaiBao.PLAYEXCHANGE)
        {
            if (!flagDoiBai)
            {
                this.notice("Chọn 3 lá bài để đổi với người chơi khác !");
                ReceiveExchange();            
            }
            else
            {
                this.notice("Vui lòng chờ các người chơi khác đổi bài...");
            }
        }
        else if(playState == KhaiBao.PLAYPLAYING)
        {
            if (clickLaBai!=-1) {
                if (currentTurn ==0)
                {
                    ReceiveCardPlay();
                }
                clickLaBai = -1;
            }
        }
        else if(playState == KhaiBao.PLAYEND)
        {
            //
        }
    }

    @Override
    public void HaveMessage(String msg) 
    {
        int dem=0;
        if (msg.startsWith("card"))
        {
            CapNhatLaBai(msg);
            if(playState == KhaiBao.PLAYSTART){
                // chuyen trang thai
                System.out.println("Switch to Game Exchange !!! ");                
                playState = KhaiBao.PLAYEXCHANGE;
            }
            else if(playState == KhaiBao.PLAYEXCHANGE){
                System.out.println("Switch to Game Playing !!! ");                
                playState = KhaiBao.PLAYPLAYING;
            }            
        }
        else if (msg.startsWith("first"))
        { 
                TimNguoiDiDauTien();            
        }
        else if (msg.startsWith("four"))
        {
            arrayId4Card.clear();
            if (playState == KhaiBao.PLAYPLAYING) 
            {
                if (msg.split("four").length > 1) {
                    String fCard = msg.split("four")[1];
                    String[] idcard = fCard.split("c");
                    for (int i = 1; i < idcard.length; i++) {
                        int id = Integer.parseInt(idcard[i]);
                        arrayId4Card.add(id);
                    }
                }
                nextturn();
                hienTatCaCacLaBaiKhongChay();
            }
        }
        else if (msg.startsWith("turn"))
        {
            int turn = Integer.parseInt(msg.split("turn")[1]);
            if (turn < m_Main.getViTri())
            {
                firstturn = (turn+4)-m_Main.getViTri();
            }
            else
            {
                firstturn= turn - m_Main.getViTri();
            }
            currentTurn = firstturn;
            if (currentTurn ==0){
                this.notice("Đến lượt bạn đi đó bạn ^^ ...");
            }
            else{
                this.notice("Chờ người " + (currentTurn + 1) + " đánh ...");
            }
            count13Card++;
            if (count13Card >1){
                flagChonCo = true;
            }
            arrayId4Card.clear();
            hienTatCaCacLaBaiKhongChay();
        }
        else if (msg.startsWith("score"))
        {
            String[] pscore= msg.split("score");
            // cap nhat cac quan bai cho 4 nguoi choi
            int d = 0;
            for (int i = 1; i <= 4; i++) 
            {
                int thutu = (m_Main.getViTri() + d) % 4;                
                int _score = Integer.parseInt(pscore[i]);
                player[thutu].setScore(_score);                
                d++;
            }
            capNhatDiem();
        }
        else if (msg.startsWith("endround"))
        {
            KetThucMotVanBai();
        }
        else if (msg.startsWith("exit"))
        {
            final JOptionPane jop = new JOptionPane("Notice");
            jop.setBounds(300, 300, 300, 300);
            jop.showMessageDialog(jop, "Server đã đóng... ");
            try{
                m_Main.getClient().stopThread();
            }catch(Exception ex){}
            m_Main.SwitchState(KhaiBao.MENU);
        }
    }
}
